/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
package controllers;

import models.Docente;
import play.Logger;
import play.data.validation.Validation;

/**
 *
 * @author jhidalgov
 */
public class Security extends Secure.Security {

    public static boolean authenticate(String usuario, String clave) {
        boolean auth = false;
        /*
         * Usamos la clase Validation la cual tiene algunos métodos estáticos
         * que nos van a permitir validar los campos del formulario hay que
         * importa la clase play.data.validation.Validation
         */
        if (Validation.hasErrors()) {
            // Si hay errores en el formulario
            // Se mantienen para poder visualizar posteriormente
            Validation.keep();
        } else {
            // Buscamos una instancia del docente por el DNI
            // Ojo se debe importar el paquete models
            Docente doc = Docente.find("byDoc_vcDni", usuario).first();
            if (doc != null) {
                // Si encuentro al docente compara la clave
                if (doc.doc_vcClave != null && doc.doc_vcClave.equals(clave)) {
                    // Si es correcta pasa
                    auth = true;
                } else {
                    // Si no es correcta la clave o no esta definida
                    if (doc.doc_vcClave == null) // Estas claves se definen en el archivo messages
                    {
                        Validation.addError("Login", "validation.login.clavenula");
                    } else {
                        Validation.addError("Login", "validation.login.claveincorrecta");
                    }
                    Validation.keep();
                }
            } else {
                // El usuario no existe
                Validation.addError("Login", "validation.login.usuarioincorrecto");
                Validation.keep();
            }
        }

        // Registra en la bitácora
        if (!auth) {
            // Se va a la bitácora
            // Hay que importar la clase play.Logger
            Logger.info("Login: Intento fallido de autenticacion %s Clave %s", usuario, clave);
        } else {
            Logger.info("Login: Usuatio %s ingreso al sistema", usuario);
        }

        // Devuelve verdad o falso
        return auth;
    }
}
